import config from '@/config.js'
import common from '@/utils/wxApplet/common.js'
/**
 * http拦截器
 */
const install = (Vue, vm) => {
	// 自定义配置参数
	Vue.prototype.$u.http.setConfig({
		baseUrl: config.HTTP_REQUEST_URL,
		loadingText: '',
		showLoading: false,
		originalData: true,
		loadingTime: 800,
		// ......
	});

	// 请求拦截
	Vue.prototype.$u.http.interceptor.request = (configs) => {
		configs.header[config.TOKEN_NAME] = vm.$store.state.vuex_token ? vm.$store.state.vuex_token : "";

		//#ifdef MP
		configs.header['Form-type'] = 'routine';
		//#endif
		//#ifdef APP-PLUS
		configs.header['Form-type'] = 'app';
		//#endif
		return configs;
	}

	// 响应拦截
	Vue.prototype.$u.http.interceptor.response = (res) => {
		// res为服务端返回值，有code、message、data等字段
		if (res.statusCode == 200) {
			if (res.data.status == 200) {
				return res.data.data;
			}
			// else if (res.code == -101) {
			// 	// Token快过期，替换新的token
			// 	vm.$u.vuex('vuex_token', res.data.token);
			// 	// 无痛刷新token
			// 	return vm.$u.post(Vue.prototype.$u.http.options.url).then(result => {
			// 		return result;
			// 	})
			// } 
			else if (res.data.status == 410000 || res.data.status == 401 || res.data.status == 410001) {
				// Token已过期｜加入黑名单｜Token校验失败，则需重新进入登录页登录
				// common.logout();
				vm.$u.toast(res.data.msg)
				// #ifdef H5
				uni.navigateTo({
					url: "/pages/subpage/login/login",
				});
				// #endif
				// #ifndef H5
				common.logout();
				uni.navigateTo({
					url: "/pages/subpage/login/oneBtnLogin",
				});
				// #endif

				return false;
			} else {

				// 如果返回false，则会调用Promise的reject回调
				if (res.data.msg) {
					vm.$u.toast(res.data.msg)
				} else {
					vm.$u.toast(res)
				}
				return Promise.reject();
			}
		} else {
			vm.$u.toast(res.data.msg)
			return Promise.reject()
		}

	}

}

export default {
	install
}